package J_S.cours2_3.Parking;

public class TestEnsemblePlaquesAutorisees{

	public static void main(String[] args) {	
		System.out.println("*******************************************************");
		System.out.println("Programme Test pour la classe EnsemblePlaquesAutorisees");
		System.out.println("");
		System.out.println("*******************************************************");
		EnsemblePlaquesAutorisees e = new EnsemblePlaquesAutorisees();
		PlaqueDeVoiture paaa000 = new PlaqueDeVoiture("AAA000");
		PlaqueDeVoiture pbbb000 = new PlaqueDeVoiture("BBB000");
		PlaqueDeVoiture pccc000 = new PlaqueDeVoiture("CCC000");
		PlaqueDeVoiture paaa999 = new PlaqueDeVoiture("AAA999");
		
		System.out.println("Cas 1 : ajout des plaques AAA000, BBB000, AAA999, CCC000");
		e.ajouterPlaque(paaa000);
		e.ajouterPlaque(pbbb000);
		e.ajouterPlaque(paaa999);
		e.ajouterPlaque(pccc000);

		System.out.println("Cas 2 : verification de la presence des plaques AAA000, BBB000, AAA999, CCC000");
		if(! e.plaqueAutorisee("AAA000")){
			System.out.println("Attention, plaque AAA000 non autorisee !");
			System.out.println("Revoyez les methodes ajouterPlaque() et plaqueAutorisee() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez les methodes ajouter() et contient() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		if(! e.plaqueAutorisee("BBB000")){
			System.out.println("Attention, plaque BBB000 non autorisee !");
			System.out.println("Revoyez les methodes ajouterPlaque() et plaqueAutorisee() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez les methodes ajouter() et contient() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		if(! e.plaqueAutorisee("CCC000")){
			System.out.println("Attention, plaque CCC000 non autorisee !");
			System.out.println("Revoyez les methodes ajouterPlaque() et plaqueAutorisee() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez les methodes ajouter() et contient() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		if(! e.plaqueAutorisee("AAA999")){
			System.out.println("Attention, plaque AAA999 non autorisee !");
			System.out.println("Revoyez les methodes ajouterPlaque() et plaqueAutorisee() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez les methodes ajouter() et contient() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		System.out.println("Cas 3 : verification de la non presence de la plaque DDD000");
		if(e.plaqueAutorisee("DDD000")){
			System.out.println("Attention, plaque DDD000 autorisee !");
			System.out.println("Revoyez les methodes ajouterPlaque() et plaqueAutorisee() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez les methodes ajouter() et contient() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		System.out.println("Cas 4 : suppression de la plaque BBB000");
		e.retirerPlaque("BBB000");
		if(e.plaqueAutorisee("BBB000")){
			System.out.println("Attention, apres suppression, la plaque BBB000 est toujours autorisee !");
			System.out.println("Revoyez la methode retirerPlaque() de la classe EnsemblePlaquesAutorisees!");
			System.out.println("Revoyez la methode enlever() de la classe EnsembleTableHashing!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}
			

		System.out.println("Cas 5 : nouvelle verification de la presence des plaques AAA000 et CCC000");
		if(! e.plaqueAutorisee("AAA000")){
			System.out.println("Attention, plaque AAA000 non autorisee !");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}
		if(! e.plaqueAutorisee("CCC000")){
			System.out.println("Attention, plaque CCC000 non autorisee !");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		System.out.println("Cas 6 : ajout de la plaque AAAOOO (qui y est deja!) et ensuite suppression de cette plaque");
		e.ajouterPlaque(paaa000);
		e.retirerPlaque("AAA000");
		if(e.plaqueAutorisee("AAA000")){
			System.out.println("Attention, apres suppression, la plaque AAA000 est toujours autorisee !");
			System.out.println("Revoyez la methode ajouter() de la classe EnsembleTableHashing : les doublons ne sont pas autorises!");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}

		System.out.println("Cas 7 : suppression 2 fois de suite de la plaque BBBOOO");
		e.retirerPlaque("BBB000");
		if(e.plaqueAutorisee("BBB000")){
			System.out.println("Attention, apres suppression, la plaque BBB000 est toujours autorisee !");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}
		e.retirerPlaque("BBB000");
		if(e.plaqueAutorisee("BBB000")){
			System.out.println("Attention, apres suppression, la plaque BBB000 est toujours autorisee !");
			System.out.println("Etes-vous sur d'utiliser une implementation correcte de la classe ListeSimple?");
			return;
		}
		System.out.println("Tous les tests ont reussi!");
	}

}